package com.qingzhuge.common;


/**
 * @author : zero.xiao
 * @description : Ajax 请求时的自定义查询状态码，主要参考Http状态码，但并不完全对应
 * @modified :
 */
public enum HttpCode implements IBaseEnum<Integer> {
    /**
     * 2000登录成功
     */
    LOGIN_SUCCESS(2000),
    /**4001请填写验证码*/
    CODE_IS_NULL(4001),
    /**4002验证码错误*/
    CODE_FAIL(4002),
    /**
     * 4003登录失败
     */
    LOGIN_FAIL(4003),
    /**
     * 4004账号不存在
     */
    NOT_ACCOUNT(4004),
    /**4005用户已存在*/
    ACCOUNT_EXISTS(4005),
    /**
     * 4006旧密码错误
     */
    OLD_PASSWORD_ERROR(4006),
    /**
     * 4007密码错误
     */
    PASSWORD_ERROR(4007),
    /**
     * 4008请填写手机号
     */
    MOBILE_IS_NULL(4008),
    /**
     * 4009手机号错误
     */
    MOBILE_ERROR(4009),
    /**
     * 4010 手机号已存在
     */
    MOBILE_EXISTS(4010),
    /**
     * 4011 token为空,没有登录
     */
    TOKEN_IS_NULL(4011),
    /**
     * 4012token过期,登录过期
     */
    TOKEN_EXPIRED(4012),
    /**
     * 4013token验证失败,登录验证失败
     */
    TOKEN_VALIDATOR_FAILED(4013),

    /**
     * 4040数据验证失败
     */
    VALIDATOR_FAILED(4040),
    /**
     * 4041验证码错误
     */
    KAPTCHA_FAILED(4041),
    /**
     * 签名异常
     */
    SIGN_ERROR(4042),
    /**
     * 4043您请求的资源已被锁定
     */
    LOCKED(4043),
    /**
     * 系统配置不支持当前业务
     */
    CONFIG_ERROR(4044),
    /**
     * 短信验证码错误
     */
    SMS_CODE_ERROR(4045),
    /**任务执行异常*/
    SCHEDULER_RUN_ERROR(4050),
    /**请求限流*/
    LIMITER_REQUEST_API(4060),
    /**业务限流*/
    LIMITER_REQUEST_OPERATION(4061),
    /**限流参数错误*/
    LIMITER_PARAMETER_ERROR(4062),

    /**
     * 4999法律不允许
     */
    UNAVAILABLE_LEGAL(4999),

    //=============================================
    /**
     * 200请求成功
     */
    OK(200),
    /**
     * 207频繁操作
     */
    MULTI_STATUS(207),
    /**
     * 400请求参数出错
     */
    BAD_REQUEST(400),
    /**
     * 401没有权限
     */
    UNAUTHORIZED(401),
    /**
     * 402需要付款
     */
    PAYMENT_REQUIRED(402),
    /**
     * 403没有登录拒绝访问
     */
    FORBIDDEN(403),
    /**
     * 404找不到页面
     */
    NOT_FOUND(404),
    /**
     * 405请求方法不能被用于请求相应的资源
     */
    METHOD_NOT_ALLOWED(405),
    /**
     * 406内容特性不满足
     */
    NOT_ACCEPTABLE(406),
    /**
     * 408请求超时
     */
    REQUEST_TIMEOUT(408),
    /**
     * 409服务器处理请求时发生了冲突
     */
    CONFLICT(409),
    /**
     * 410您请求的资源已经不可用
     */
    GONE(410),
    /**
     * 411服务器无法处理客户端发送的不带Content-Length的请求信息
     */
    LENGTH_REQUIRED(411),
    /**
     * 412条件不满足
     */
    PRECONDITION_FAILED(412),
    /**
     * 413请求数据太大
     */
    ENTITY_TOO_LARGE(413),
    /**
     * 请求的 URI 过长
     */
    REQUEST_URI_TOO_LONG(414),

    /**
     * 415服务器无法处理请求附带的媒体格式
     */
    UNSUPPORTED_MEDIA_TYPE(415),
    /**
     * 客户端请求的范围无效
     */
    REQUESTED_RANGE_NOT_SATISFIABLE(416),
    /**
     * 服务器无法满足Expect的请求头信息
     */
    EXPECTATION_FAILED(417),

    /**
     * 421连接数过多
     */
    TOO_MANY_CONNECTIONS(421),

    /**
     * 500服务器出错
     */
    INTERNAL_SERVER_ERROR(500),
    /**
     * 501不支持当前请求所需要的某个功能
     */
    NOT_IMPLEMENTED(501),
    /**
     * 错误网关
     */
    BAD_GATEWAY(502),
    /**
     * 503服务器升级中,暂时不可用
     */
    SERVICE_UNAVAILABLE(503);

    private final Integer value;

    HttpCode(Integer value) {
        this.value = value;
    }


    /**
     * Return the integer value of this status code.
     */
    @Override
    public Integer value() {
        return this.value;
    }

    public String message() {
        return Resources.getMessage(Constants.I18n.HTTPCODE + this.value);
    }

    @Override
    public String toString() {
        return this.value.toString();
    }

}
